import appPushClass from './app_push.js';
import h5PushComponent from './h5_push.vue';
import Vue from 'vue';

// 核心函数，负责根据平台创建并显示推送
function _showAppPush(options = {}) {
    // #ifdef APP-PLUS
    // 在APP端，实例化原生视图类并显示
    new appPushClass({ ...options }).show();
    // #endif
    
    // #ifdef H5
    // 在H5端，动态创建Vue组件实例
    const H5PushConstructor = Vue.extend(h5PushComponent);
    const instance = new H5PushConstructor({
        propsData: options // 将选项作为props传递给H5组件
    });
    
    // 创建一个div作为挂载点
    const mountPoint = document.createElement('div');
    document.body.appendChild(mountPoint);
    
    // 挂载实例
    instance.$mount(mountPoint);
    // #endif
}

// Vue插件定义
const AppPushPlugin = {
    install(VueInstance) {
        // 在Vue原型上挂载 $appPush 方法，方便在组件内调用
        VueInstance.prototype.$appPush = _showAppPush;
    }
};

// 命名导出，方便在非Vue环境（如纯JS模块）中直接导入和使用
export { _showAppPush as showAppPush };

// 默认导出插件对象，供 Vue.use() 使用
export default AppPushPlugin;